import { getAllMonitorData, getDemonstrateMonitorData } from '@/api/mapServices/mapData';

/**
 * RR：水文站
 * CZ：渠道水位站
 * HZ：涵闸站
 * DD：水闸站
 * DP：泵站
 * WQ：水质站
 * VE：视频站
 * WSK：污水排口
 * SN：枢纽
 */
const StationType = ['RR', 'CZ', 'HZ', 'DD', 'DP', 'WQ', 'VE', 'WSK', 'SN'];

function checkForNull(value: any) {
  return value === null || value === undefined ? '-' : value;
}

export function loadStation(api: any, type: 'all' | 'demonstrate') {
  const promiseData = type === 'all' ? getAllMonitorData() : getDemonstrateMonitorData();

  promiseData.then((data) => {
    // 对数据按照sttp值进行分组
    const groupedBySttp = data.reduce((groups, item) => {
      // 如果这个组还不存在，先创建一个空数组
      if (!groups[item.sttp]) {
        groups[item.sttp] = [];
      }
      // 将当前元素添加到对应的组中
      groups[item.sttp].push(item);
      // 返回更新后的分组对象
      return groups;
    }, {});

    StationType.forEach((station) => {
      const markerArr: any = [];
      groupedBySttp[station]?.forEach((item: any, index: number) => {
        let text = item.stnm;
        if (item.monitorData) {
          if (station === 'CZ') {
            text +=
              '\r\n水位：' +
              checkForNull(item.monitorData.z) +
              '\r\n电压：' +
              checkForNull(item.monitorData.voltage);
          } else if (station === 'DP') {
            text +=
              '\r\n瞬时流量：' +
              checkForNull(item.monitorData.q) +
              '\r\n流速：' +
              checkForNull(item.monitorData.qvelocity) +
              '\r\n正向累计流量：' +
              checkForNull(item.monitorData.qforwardCumulative) +
              '\r\n反向累计流量：' +
              checkForNull(item.monitorData.qreverseCumulative) +
              '\r\n温度：' +
              checkForNull(item.monitorData.temperature) +
              '\r\n湿度：' +
              checkForNull(item.monitorData.humidity) +
              '\r\n管道压力：' +
              checkForNull(item.monitorData.pipelinePressure);
          }
          if (station === 'HZ') {
            text +=
              '\r\n电压：' +
              checkForNull(item.monitorData.voltage) +
              '\r\n电流：' +
              checkForNull(item.monitorData.electricity) +
              '\r\n开度：' +
              checkForNull(item.monitorData.gtophgt);
          }
        }
        const marker = {
          id: 'marker_' + (item.id === null ? index : item.id),
          groupId: 'marker_group_' + station,
          userData: checkForNull(item.stcd) + '_' + station + '_' + checkForNull(item.stnm),
          coordinateType: 1,
          coordinate: [+item.lgtd, +item.lttd], //坐标位置
          anchors: [-27 / 2, 75 / 2],
          range: [1, 30000, 30000, 30000],
          viewHeightRange: [1, 30000],
          text: text, //显示的文字
          useTextAnimation: false, //关闭文字展开动画效果 打开会影响效率
          imagePath: '@path:/xyh/icon/' + station + '_normal.png',
          imageSize: [54 / 2, 75 / 2],
          textRange: [1, 1000], //文本可视范围[近裁距离, 远裁距离]
          textOffset: [5, -5], // 文本偏移
          textBackgroundColor: '#000000', //文本背景颜色
          fontSize: 12, //字体大小
          fontOutlineSize: 1, //字体轮廓线大小
          fontColor: '#ffffff', //字体颜色
          fixedSize: false,
          autoHeight: true,
          displayMode: 2,
          occlusionCull: true,
          clusterByImage: false,
        };
        markerArr.push(marker);
      });
      api.marker.add(markerArr);
      if (station !== 'DP') {
        api.marker.hideByGroupId('marker_group_' + station);
      }
    });
  });
}
